Processing devices, also sometimes referred to as processors, processing units, or microprocessors, are devices that utilize integrated circuits to perform a variety of functions. For example, some processing devices include integrated circuits designed to execute programs storied in a memory. Some processing devices include application-specific integrated circuits (ASICs) designed for particular use cases. Central processing units (CPUs) are types of processors that provide the central processing functionality of typical computers. Network processors are more specialized devices that are optimized to process network data packets. System on Chip (SoC) processors can integrate all a wide variety of components of a system into a single chip. Such devices may include digital, analog, mixed signal and other functions on a single chip substrate.
A typical modern processing unit will include multiple processor cores, and may include multiple hardware processing cores. In a typical implementation, each processor core can execute instructions independently. Multiple processing cores can thus run multiple instructions at the same, and thus can increase overall processing speed.
A typical hardware processing core will include multiple hardware engines. During operation, these hardware engines will utilize various resources in the processing core. For example, each hardware engine can be allocated memory in the hardware processing core, with that memory used in the processing performed by the hardware engines. One issue with such hardware engines is resource leakage. In general, resource leakage occurs when the hardware engine fails to release a resource after the action that used the resource is complete. When resources are not released after use, they cannot be reallocated and reused by other hardware engines. If this resource leakage continues the hardware processing core can run out of resources, causing the hardware processing core to become stuck and otherwise stop functioning.
The typical solution to resource leakage is to reset the entire system. For example, the entire computer or router may have to be reset to recover from the resource leakage. Unfortunately, performing such a full system reset can be complex procedure that takes significant time. With a network processor, the resetting of a router or other networking device can significantly degrade the performance of the larger network during the reset. Thus, what is needed are improved techniques for recovering from resource leakage in hardware processing cores.